import axios from 'axios';
import { useUserStore } from '@/stores/user';

// 创建axios实例
const http = axios.create({
  baseURL: import.meta.env.VITE_API_BASE_URL || '/api',
  timeout: 20000,
  headers: {
    'Content-Type': 'application/json'
  },
  // 确保请求包含凭据（cookies）
  withCredentials: true
});

// 请求拦截器
http.interceptors.request.use(
  config => {
    // 不再设置Authorization头，因为使用Session认证
    // 保留拦截器以便将来可能的扩展
    return config;
  },
  error => {
    console.error('Request error:', error);
    return Promise.reject(error);
  }
);

// 响应拦截器
http.interceptors.response.use(
  response => {
    const res = response.data;
    
    // 假设后端返回的数据结构为 { code, data, message }
    if (res.code !== 0) {
      console.error('API error:', res.message || 'Error');
      return Promise.reject(new Error(res.message || 'Error'));
    }
    
    return res;
  },
  error => {
    const userStore = useUserStore();
    
    // 处理401未授权错误
    if (error.response && error.response.status === 401) {
      // 只有当前不在登录页面时才重定向到登录页面
      const currentPath = window.location.pathname;
      if (currentPath !== '/login') {
        console.log('Unauthorized access, redirecting to login page');
        userStore.logout();
        window.location.href = '/login';
      } else {
        console.log('Already on login page, not redirecting');
      }
    }
    
    console.error('Response error:', error);
    return Promise.reject(error);
  }
);

export default http;